﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Business.Operations;
using Entity.Framework;

namespace HPDMAS.UserControls
{
    public partial class MusabakaKayit : System.Web.UI.UserControl
    {
        public int ligId;
        public int sezonId;
        public int sehirId;

        private string _macAdi;
        private int _macId;
        private string _hakemAdi;
        private int _hakemId;
        private string _yardimciHakem1Adi;
        private int _yardimciHakem1Id;
        private string _yardimciHakem2Adi;
        private int _yardimciHakem2Id;
        private string _gozlemciAdi;
        private int _gozlemciId;
        private int _hakemNfsId;
        private int _yardimciHakem1NfsId;
        private int _yardimciHakem2NfsId;
        private int _gozlemciNfsId;
        private string _hakemGorevAdi;
        private string _yardimciHakem1GorevAdi;
        private string _yardimciHakem2GorevAdi;
        private string _gozlemciGorevAdi;
        private int _hakemGorevId;
        private int _yardimciHakem1GorevId;
        private int _yardimciHakem2GorevId;
        private int _gozlemciGorevId;
        private int _hakemUcretId;
        private int _yardimciHakem1UcretId;
        private int _yardimciHakem2UcretId;
        private int _gozlemciUcretId;
        private bool _hakemDeplasmanMi;
        private bool _yardimciHakem1DeplasmanMi;
        private bool _yardimciHakem2DeplasmanMi;
        private bool _gozlemciDeplasmanMi;

        private decimal _hakemYolUcreti;
        private decimal _yardimciHakem1YolUcreti;
        private decimal _yardimciHakem2YolUcreti;
        private decimal _gozlemciYolUcreti;

        private decimal _hakemVarsayilanUcreti;
        private decimal _yardimciHakem1VarsayilanUcreti;
        private decimal _yardimciHakem2VarsayilanUcreti;
        private decimal _gozlemciVarsayilanUcreti;

        private decimal _hakemYuzdeElliDeplasmanUcreti;
        private decimal _yardimciHakem1YuzdeElliDeplasmanUcreti;
        private decimal _yardimciHakem2YuzdeElliDeplasmanUcreti;
        private decimal _gozlemciYuzdeElliDeplasmanUcreti;

        private decimal _hakemNetUcret;
        private decimal _yardimciHakem1NetUcret;
        private decimal _yardimciHakem2NetUcret;
        private decimal _gozlemciNetUcret;

        private decimal _hakemDernekKesintisi;
        private decimal _yardimciHakem1DernekKesintisi;
        private decimal _yardimciHakem2DernekKesintisi;

        private decimal _hakemKesintisizUcret;
        private decimal _yardimciHakem1KesintisizUcret;
        private decimal _yardimciHakem2KesintisizUcret;

        private int _musabakaId;
        string sayfaUrl;

        protected void Page_Load(object sender, EventArgs e)
        {
            //MACGOREV
            _hakemGorevAdi = "Hakem";
            _hakemGorevId = MacGorevOperation.MacGorevIdGetByMacGorevAdi(_hakemGorevAdi);
            _yardimciHakem1GorevAdi = "Yardımcı Hakem";
            _yardimciHakem1GorevId = MacGorevOperation.MacGorevIdGetByMacGorevAdi(_yardimciHakem1GorevAdi);
            _yardimciHakem2GorevAdi = "Yardımcı Hakem";
            _yardimciHakem2GorevId = MacGorevOperation.MacGorevIdGetByMacGorevAdi(_yardimciHakem2GorevAdi);
            _gozlemciGorevAdi = "Gözlemci";
            _gozlemciGorevId = MacGorevOperation.MacGorevIdGetByMacGorevAdi(_gozlemciGorevAdi);

            //HAKEM UCRET ID
            _hakemUcretId = MacUcretOperation.MacUcretIdGetBySezonIdLigIdAndGorevId(sezonId, ligId, _hakemGorevId);
            _yardimciHakem1UcretId = MacUcretOperation.MacUcretIdGetBySezonIdLigIdAndGorevId(sezonId, ligId, _yardimciHakem1GorevId);
            _yardimciHakem2UcretId = MacUcretOperation.MacUcretIdGetBySezonIdLigIdAndGorevId(sezonId, ligId, _yardimciHakem2GorevId);
            _gozlemciUcretId = MacUcretOperation.MacUcretIdGetBySezonIdLigIdAndGorevId(sezonId, ligId, _gozlemciGorevId);

            _hakemVarsayilanUcreti = MacUcretOperation.MacUcretiGetByMacUcretId(_hakemUcretId);
            _yardimciHakem1VarsayilanUcreti = MacUcretOperation.MacUcretiGetByMacUcretId(_yardimciHakem1UcretId);
            _yardimciHakem2VarsayilanUcreti = MacUcretOperation.MacUcretiGetByMacUcretId(_yardimciHakem2UcretId);
            _gozlemciVarsayilanUcreti = MacUcretOperation.MacUcretiGetByMacUcretId(_gozlemciUcretId);

            if (!IsPostBack)
            {
                ddlMac.DataSource = MacOperation.MacAdiGetByLigId(ligId);
                ddlMac.DataBind();

                //TODO: rolId'si hakem olanların Lisans numaralarını getir ve ardından lisansnoya göre isim getir.
                ddlHakem.DataSource = KullaniciNfsOperation.KullaniciAdiSoyadiGetBySehirId(sehirId);
                ddlHakem.DataBind();

                ddlYardimciHakem1.DataSource = KullaniciNfsOperation.KullaniciAdiSoyadiGetBySehirId(sehirId);
                ddlYardimciHakem1.DataBind();

                ddlYardimciHakem2.DataSource = KullaniciNfsOperation.KullaniciAdiSoyadiGetBySehirId(sehirId);
                ddlYardimciHakem2.DataBind();

                ddlGozlemci.DataSource = KullaniciNfsOperation.KullaniciAdiSoyadiGetBySehirId(sehirId);
                ddlGozlemci.DataBind();

                txtHakemNetUcreti.Text = _hakemVarsayilanUcreti.ToString();
                txtYardimciHakem1NetUcreti.Text = _yardimciHakem1VarsayilanUcreti.ToString();
                txtYardimciHakem2NetUcreti.Text = _yardimciHakem2VarsayilanUcreti.ToString();
                txtGozlemciNetUcreti.Text = _gozlemciVarsayilanUcreti.ToString();
            }
        }

        protected void ddlMac_SelectedIndexChanged(object sender, EventArgs e)
        {
            _macAdi = ddlMac.SelectedValue;
            if (_macAdi == "-1")
            {
                txtMacTarihi.Text = "";
                txtMacGunu.Text = "";
                txtMacSaati.Text = "";
                txtSaha.Text = "";
                txtKategori.Text = "";
            }
            else
            {
                _macId = MacOperation.MacIdGetByMacAdi(_macAdi);

                txtMacTarihi.Text = MacOperation.MacTarihiGetByMacId(_macId);
                txtMacGunu.Text = MacOperation.MacGunuGetByMacId(_macId);
                txtMacSaati.Text = MacOperation.MacSaatiGetByMacId(_macId);
                txtSaha.Text = MacOperation.MacSahaTipiGetByMacId(_macId);
                txtKategori.Text = MacOperation.MacKategoriGetByMacId(_macId);
            }
        }

        protected void btnMusabakaEkle_Click(object sender, EventArgs e)
        {
            try
            {
                MusabakaEkle();
                Session["kaydedildiMesaji"] = "Müsabaka başarıyla kaydedildi. Son kaydedilen müsabaka bilgileri:";
                sayfaUrl = "~/Gozlemci/IHKUyesi/KayitTamamlandi.aspx";
            }
            catch (Exception ee)
            {
                Session["hataMesaji"] = "Hata oluştu.<br />Hata mesajı: " + ee.Message;
                sayfaUrl = "~/HataSayfasi.aspx";
            }
            finally
            {
                Response.Redirect(sayfaUrl);
            }
        }

        private void MusabakaEkle()
        {
            //TODO : Lisans No ve TC Kimlik No'ya göre arama yaptırılacak.
            _hakemAdi = ddlHakem.SelectedValue;
            _yardimciHakem1Adi = ddlYardimciHakem1.SelectedValue;
            _yardimciHakem2Adi = ddlYardimciHakem2.SelectedValue;
            _gozlemciAdi = ddlGozlemci.SelectedValue;

            if (_hakemAdi != "-1" && _yardimciHakem1Adi != "-1" && _yardimciHakem2Adi != "-1" && _gozlemciAdi != "-1")
            {
                _hakemId = KullaniciOperation.KullaniciIdGetByKullaniciAdiSoyadi(_hakemAdi);
                _yardimciHakem1Id = KullaniciOperation.KullaniciIdGetByKullaniciAdiSoyadi(_yardimciHakem1Adi);
                _yardimciHakem2Id = KullaniciOperation.KullaniciIdGetByKullaniciAdiSoyadi(_yardimciHakem2Adi);
                _gozlemciId = KullaniciOperation.KullaniciIdGetByKullaniciAdiSoyadi(_gozlemciAdi);

                //KULLANICINFSID
                _hakemNfsId = KullaniciNfsOperation.KullaniciNfsIdGetByKullaniciId(_hakemId);
                _yardimciHakem1NfsId = KullaniciNfsOperation.KullaniciNfsIdGetByKullaniciId(_yardimciHakem1Id);
                _yardimciHakem2NfsId = KullaniciNfsOperation.KullaniciNfsIdGetByKullaniciId(_yardimciHakem2Id);
                _gozlemciNfsId = KullaniciNfsOperation.KullaniciNfsIdGetByKullaniciId(_gozlemciId);
            }

            //DEPLASMAN MI BOOL KONTROLÜ
            _hakemDeplasmanMi = chbHakemDeplasmanMi.Checked;
            _yardimciHakem1DeplasmanMi = chbYardimciHakem1DeplasmanMi.Checked;
            _yardimciHakem2DeplasmanMi = chbYardimciHakem2DeplasmanMi.Checked;
            _gozlemciDeplasmanMi = chbGozlemciDeplasmanMi.Checked;

            if (txtHakemYolUcreti.Text == "")
            {
                _hakemYolUcreti = 0;
            }
            else
            {
                _hakemYolUcreti = Convert.ToDecimal(txtHakemYolUcreti.Text);
            }

            if (txtYardimciHakem1YolUcreti.Text == "")
            {
                _yardimciHakem1YolUcreti = 0;
            }
            else
            {
                _yardimciHakem1YolUcreti = Convert.ToDecimal(txtYardimciHakem1YolUcreti.Text);
            }

            if (txtYardimciHakem2YolUcreti.Text == "")
            {
                _yardimciHakem2YolUcreti = 0;
            }
            else
            {
                _yardimciHakem2YolUcreti = Convert.ToDecimal(txtYardimciHakem2YolUcreti.Text);
            }

            if (txtGozlemciYolUcreti.Text == "")
            {
                _gozlemciYolUcreti = 0;
            }
            else
            {
                _gozlemciYolUcreti = Convert.ToDecimal(txtGozlemciYolUcreti.Text);
            }

            HakemDeplasmanBilgisineGoreVarsayilanUcretiYenile();
            YardimciHakem1DeplasmanBilgisineGoreVarsayilanUcretiYenile();
            YardimciHakem2DeplasmanBilgisineGoreVarsayilanUcretiYenile();
            GozlemciDeplasmanBilgisineGoreVarsayilanUcretiYenile();

            //%10 KESİLMEDEN ÖNCEKİ NET ÜCRET
            _hakemKesintisizUcret = _hakemVarsayilanUcreti + _hakemYolUcreti;
            _yardimciHakem1KesintisizUcret = _yardimciHakem1VarsayilanUcreti + _yardimciHakem1YolUcreti;
            _yardimciHakem2KesintisizUcret = _yardimciHakem2VarsayilanUcreti + _yardimciHakem2YolUcreti;

            //DERNEK YÜZDE 10 ÜCRET HESAPLAMASI
            _hakemDernekKesintisi = _hakemKesintisizUcret * 10 / 100;
            _yardimciHakem1DernekKesintisi = _yardimciHakem1KesintisizUcret * 10 / 100;
            _yardimciHakem2DernekKesintisi = _yardimciHakem2KesintisizUcret * 10 / 100;

            //%10 KESİLDİKTEN SONRAKİ NET ÜCRET
            _hakemNetUcret = _hakemVarsayilanUcreti + _hakemYolUcreti - _hakemDernekKesintisi;
            _yardimciHakem1NetUcret = _yardimciHakem1VarsayilanUcreti + _yardimciHakem1YolUcreti - _yardimciHakem1DernekKesintisi;
            _yardimciHakem2NetUcret = _yardimciHakem2VarsayilanUcreti + _yardimciHakem2YolUcreti - _yardimciHakem2DernekKesintisi;
            _gozlemciNetUcret = _gozlemciVarsayilanUcreti + _gozlemciYolUcreti;

            txtHakemNetUcreti.Text = _hakemNetUcret.ToString();
            txtYardimciHakem1NetUcreti.Text = _yardimciHakem1NetUcret.ToString();
            txtYardimciHakem2NetUcreti.Text = _yardimciHakem2NetUcret.ToString();
            txtGozlemciNetUcreti.Text = _gozlemciNetUcret.ToString();

            //-------------------------devam
            _macAdi = ddlMac.SelectedValue;
            _macId = MacOperation.MacIdGetByMacAdi(_macAdi);

            Musabaka musabaka = new Musabaka();
            musabaka.MacID = _macId;
            musabaka.HakemID = _hakemId;
            musabaka.YardimciHakem1ID = _yardimciHakem1Id;
            musabaka.YardimciHakem2ID = _yardimciHakem2Id;
            musabaka.GozlemciID = _gozlemciId;
            musabaka.HakemGorevID = _hakemGorevId;
            musabaka.YardimciHakem1GorevID = _yardimciHakem1GorevId;
            musabaka.YardimciHakem2GorevID = _yardimciHakem2GorevId;
            musabaka.GozlemciGorevID = _gozlemciGorevId;
            musabaka.HakemDeplasmanMi = _hakemDeplasmanMi;
            musabaka.YardimciHakem1DeplasmanMi = _yardimciHakem1DeplasmanMi;
            musabaka.YardimciHakem2DeplasmanMi = _yardimciHakem2DeplasmanMi;
            musabaka.GozlemciDeplasmanMi = _gozlemciDeplasmanMi;
            musabaka.HakemYolUcreti = _hakemYolUcreti;
            musabaka.YardimciHakem1YolUcreti = _yardimciHakem1YolUcreti;
            musabaka.YardimciHakem2YolUcreti = _yardimciHakem2YolUcreti;
            musabaka.GozlemciYolUcreti = _gozlemciYolUcreti;
            musabaka.HakemNetUcreti = _hakemNetUcret;
            musabaka.YardimciHakem1NetUcreti = _yardimciHakem1NetUcret;
            musabaka.YardimciHakem2NetUcreti = _yardimciHakem2NetUcret;
            musabaka.GozlemciNetUcreti = _gozlemciNetUcret;
            musabaka.HakemDernekKesintiBedeli = _hakemDernekKesintisi;
            musabaka.YardimciHakem1DernekKesintiBedeli = _yardimciHakem1DernekKesintisi;
            musabaka.YardimciHakem2DernekKesintiBedeli = _yardimciHakem2DernekKesintisi;
            musabaka.DegisiklikTarihi = DateTime.Now;
            musabaka.HakemNfsID = _hakemNfsId;
            musabaka.YardimciHakem1NfsID = _yardimciHakem1NfsId;
            musabaka.YardimciHakem2NfsID = _yardimciHakem2NfsId;
            musabaka.GozlemciNfsID = _gozlemciNfsId;
            musabaka.HakemUcretID = _hakemUcretId;
            musabaka.YardimciHakem1UcretID = _yardimciHakem1UcretId;
            musabaka.YardimciHakem2UcretID = _yardimciHakem2UcretId;
            musabaka.GozlemciUcretID = _gozlemciUcretId;
            MusabakaOperation.MusabakaInsert(musabaka);

            _musabakaId = MusabakaOperation.MusabakaIdGetByMacId(_macId);
            Session["musabakaId"] = _musabakaId;
        }

        private void HakemDeplasmanBilgisineGoreVarsayilanUcretiYenile()
        {
            if (chbHakemDeplasmanMi.Checked)
            {
                _hakemYuzdeElliDeplasmanUcreti = MacUcretOperation.YuzdeElliDeplasmanUcretiGetByMacUcretId(_hakemUcretId);
                _hakemVarsayilanUcreti = (_hakemVarsayilanUcreti + _hakemYuzdeElliDeplasmanUcreti);
                txtHakemNetUcreti.Text = _hakemVarsayilanUcreti.ToString();
            }
            else
            {
                txtHakemNetUcreti.Text = _hakemVarsayilanUcreti.ToString();
            }
        }

        private void YardimciHakem1DeplasmanBilgisineGoreVarsayilanUcretiYenile()
        {
            if (chbYardimciHakem1DeplasmanMi.Checked)
            {
                _yardimciHakem1YuzdeElliDeplasmanUcreti = MacUcretOperation.YuzdeElliDeplasmanUcretiGetByMacUcretId(_yardimciHakem1UcretId);
                _yardimciHakem1VarsayilanUcreti = _yardimciHakem1VarsayilanUcreti + _yardimciHakem1YuzdeElliDeplasmanUcreti;
                txtYardimciHakem1NetUcreti.Text = _yardimciHakem1VarsayilanUcreti.ToString();
            }
            else
            {
                txtYardimciHakem1NetUcreti.Text = _yardimciHakem1VarsayilanUcreti.ToString();
            }
        }

        private void YardimciHakem2DeplasmanBilgisineGoreVarsayilanUcretiYenile()
        {
            if (chbYardimciHakem2DeplasmanMi.Checked)
            {
                _yardimciHakem2YuzdeElliDeplasmanUcreti = MacUcretOperation.YuzdeElliDeplasmanUcretiGetByMacUcretId(_yardimciHakem2UcretId);
                _yardimciHakem2VarsayilanUcreti = _yardimciHakem2VarsayilanUcreti + _yardimciHakem2YuzdeElliDeplasmanUcreti;
                txtYardimciHakem2NetUcreti.Text = _yardimciHakem2VarsayilanUcreti.ToString();
            }
            else
            {
                txtYardimciHakem2NetUcreti.Text = _yardimciHakem2VarsayilanUcreti.ToString();
            }
        }

        private void GozlemciDeplasmanBilgisineGoreVarsayilanUcretiYenile()
        {
            if (chbGozlemciDeplasmanMi.Checked)
            {
                _gozlemciYuzdeElliDeplasmanUcreti = MacUcretOperation.YuzdeElliDeplasmanUcretiGetByMacUcretId(_gozlemciUcretId);
                _gozlemciVarsayilanUcreti = _gozlemciVarsayilanUcreti + _gozlemciYuzdeElliDeplasmanUcreti;
                txtGozlemciNetUcreti.Text = _gozlemciVarsayilanUcreti.ToString();
            }
            else
            {
                txtGozlemciNetUcreti.Text = _gozlemciVarsayilanUcreti.ToString();
            }
        }

        protected void chbHakemDeplasmanMi_CheckedChanged(object sender, EventArgs e)
        {
            HakemDeplasmanBilgisineGoreVarsayilanUcretiYenile();
        }

        protected void chbYardimciHakem1DeplasmanMi_CheckedChanged(object sender, EventArgs e)
        {
            YardimciHakem1DeplasmanBilgisineGoreVarsayilanUcretiYenile();
        }

        protected void chbYardimciHakem2DeplasmanMi_CheckedChanged(object sender, EventArgs e)
        {
            YardimciHakem2DeplasmanBilgisineGoreVarsayilanUcretiYenile();
        }

        protected void chbGozlemciDeplasmanMi_CheckedChanged(object sender, EventArgs e)
        {
            GozlemciDeplasmanBilgisineGoreVarsayilanUcretiYenile();
        }
    }

}